Join, place replicas, transfer data, verify, repeat with care
Adding a node to an existing Qdrant cluster involves a sequence of steps: provision the node with the same configuration and version as the existing cluster, join it to the cluster's Raft group, wait for the cluster to recognize it, then trigger the placement or rebalancing logic to move some shard replicas onto the new node, and verify the transfer. The exact mechanism depends on the version: in some versions, the cluster automatically distributes shards when a new node joins; in others, the operator must trigger a rebalance. The transfer itself is a data migration: the new node receives a snapshot or a stream of the shard's data from a peer, applies it, and then joins the replication stream. The shard's primary continues to serve traffic during the transfer, so there is no downtime for that shard, but the transfer consumes network bandwidth and disk I/O on both the source and the destination node, which can affect query latency. The process must be done one shard at a time, or in small batches, to avoid saturating the network and causing latency spikes.
The mechanism that makes this safe is that shard replicas are independent: moving one replica of a shard does not affect the shard's availability, because the primary and the other replicas continue to serve. The cluster's metadata (maintained through Raft) tracks the placement, and the rebalance updates the placement atomically. The new node's replica is only promoted to primary if the primary fails, so the rebalance does not change the write path. The transfer is bounded by the size of the shard and the network bandwidth between the source and the destination. For a large shard, this can take minutes to hours. During the transfer, the source node's query latency may increase because of the I/O and network load, so the transfer should be scheduled during a low-traffic period if possible. After the transfer, the new node's replica is fully in sync and can serve reads, which increases the cluster's capacity. The rebalance is complete when the cluster's placement is balanced, which may require moving multiple replicas. The whole process should be monitored for progress, latency impact, and errors.
Provision the node: same version, same configuration, same hardware profile.
Join the cluster: add the node to the Raft group and wait for it to be recognized.
Trigger rebalance: let the cluster place shards, or manually assign replicas.
Transfer data: the new node receives a snapshot or streams from a peer.
No downtime: the primary and other replicas continue to serve during the transfer.
Load impact: the transfer consumes network and disk I/O on the source and destination nodes.
Verify: check that the new replica is in sync and the cluster's placement is balanced.
Batch the transfers: move one or a few replicas at a time to avoid saturating resources.
The trade-off is between adding capacity quickly and avoiding latency impact. A fast rebalance moves many replicas at once, which saturates the network and causes latency spikes. A slow rebalance moves one replica at a time, which is safe but takes longer. The right pace depends on the latency SLO and the size of the shards. The common mistakes are: (1) joining a node with a different version or configuration, which can cause compatibility issues; (2) triggering a full rebalance during peak traffic, which causes latency spikes; (3) not monitoring the transfer progress, so a stuck transfer is not noticed; (4) moving too many replicas at once, which saturates the network; (5) not verifying the placement after the rebalance, so some shards are still unbalanced. Version note: the cluster join and rebalance APIs have changed across Qdrant releases. In some versions, the rebalance is automatic; in others, it is manual. The exact API for adding a node and triggering a rebalance may differ. Verify the process on your version before performing it in production.
Version-dependent: the cluster join and rebalance APIs and the automatic placement behavior have changed across Qdrant releases. In older versions, the rebalance was more manual; in newer versions, it is more automated. Qdrant Cloud manages the process. If you are self-hosting, verify the exact process for your version and test it in a staging cluster before doing it in production.
You add a node to a cluster and no shards move to it. Explain why and how to trigger the rebalance.
A teammate adds a node with a different version. Explain the risk and what to do instead.
You add a node and the rebalance causes a latency spike. Diagnose the cause and describe how to avoid it next time.
You need to double the cluster's capacity. Describe the process for adding nodes and rebalancing, with minimal impact.
Design the process for expanding a cluster from 3 to 6 nodes with no downtime and no latency regression. Specify the steps, the pacing, and the monitoring.
You need to decommission a node and move its shards elsewhere. Describe the process and the safety checks.
Derive the time to rebalance a cluster as a function of shard sizes, network bandwidth, and the pacing constraint. How would you plan a large expansion?
You are designing a system that must scale elastically with traffic. Describe the autoscaling and rebalancing architecture, and the trade-offs.